4.3 元组¶
元组是序列中的另一种数据结构,它支持的操作与列表类似,但与字符串相同的是,元组内的数据无法被修改。因此,列表中有关修改的操作, 在元组中都无法实现。在Python中,用()来代表元组。
4.3.1 元组的创建¶
元组的定义方式是多样的,即使没有圆括号()也可以定义成元组。
1 2 3 4 | >>> ("a","b","c")
('a', 'b', 'c')
>>> "a","b","c"
('a', 'b', 'c')
|
同样可以定义单个数据为一个元组,其格式比较特殊。
1 2 | >>> "a",
('a',)
|
尽管看上去会比较奇怪,需要在数据后加上“,”来声明它是一个元组。
4.3.2 tuple函数和list函数¶
tuple函数和list函数的实现功能类似,故将其放在一起进行讲解。其功能是将输入的序列(字符串、元组和列表)转化为元组(列表)。
1 2 3 4 5 6 7 8 9 10 11 12 13 | >>> tuple("abc")
('a', 'b', 'c')
>>> tuple(["a","b","c"])
('a', 'b', 'c')
>>> tuple(("a","b","c"))
('a', 'b', 'c')
>>> list("abc")
['a', 'b', 'c']
>>> list(["a","b","c"])
['a', 'b', 'c']
>>> list(["a","b","c"])
['a', 'b', 'c']
|
4.3.3 元组的使用场合¶
元组相比于列表,由于其不可更改的特性,元组没有像列表那么多的方法可供使用,这似乎显得元组的存在并不必须。那么,在什么场合下, 我们无法使用列表来代替元组呢?
- 元组是一个不可变的序列,可被作为字典(dict)中的键(key)使用(字典中的键无法被直接修改),而列表不行。
- 用于记录无需修改的数据,可以防止数据被错误的修改的情况发生。
- 作为函数的输出,可防止程序不慎将其内容修改。
对于第三点,在BlueFi的 多种传感器输出的测量结果都包含有多个分量,例如加速度计(x、y、z三个轴上的加速度)、光学传感器(RGB值和亮度)等, 将这些结果作为一个整体传递给一个接口函数时,最佳的数据类型就是使用元组,可以保证在传递过程中,其值不被修改。虽然也可以使用列表型, 但列表不是最佳选择。
4.3.4 小结¶
本节内容中介绍了元组与列表的不同之处、元组的定义和基本操作、元组的必要性。从中引入了新的函数——tuple函数和list函数,对其的使用方法做了说明。
列表和元组是Python中重要的数据结构,它们与字符串一样,同属于序列。而下一节将介绍映射数据结构中的字典,它除了可以存放数据外, 最重要的是它可以体现两组数据之间的对应关系。